//using System;
//using System.Collections.Generic;
//using System.Text;
//using System.IO;

//namespace GeneticAlgorithm.CP3.ParseTree
//{
//    class Problem : Problem<Stream, float[]>
//    {
//        private float simulationTime;
//        private float frameTime = 0.03333f;

//        public enum FunctionSet
//        {
//            Add = 0, Subtract, Multiply, Divide
//        };

//        public enum TerminalSet
//        {
//            Time = 4, Random, Constant
//        };

//        public Problem(float simulationTime)
//        {
//            this.simulationTime = simulationTime;
//        }

//        public override float[] Evaluate(Stream solution)
//        {
//            // initialize simulation
//            // on each frame
//            //      update simulation
//            //      pass simulation states to animation controller, update animation
//            //      render
      
//            // animation controller code interpreter
//            //DNA.GeneManager gm = new DNA.GeneManager() ;

//            // stores animation controller result from each frame over entire simulation time
//            float[] retval = new float[(int)(simulationTime / frameTime)];

//            // simulate passage of time
//            //int index = 0;
//            for (float t = 0f; t < simulationTime; t += frameTime)
//            {
//                using (StreamReader sr = new StreamReader(solution))
//                {
//                    String line = sr.ReadLine();
//                    //retval[index++] = gm.Interpret(line, t);
//                }
//                solution.Seek(0, SeekOrigin.Begin);
//            }

//            return retval;            
//        }
//    }
//}
